package com.wpzf.system.service;

import com.wpzf.system.api.domain.SysUserPlatformRole;
import com.wpzf.system.domain.SysPlatform;
import com.wpzf.system.domain.SysPlatformRole;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Set;

public interface ISysPlatformService {
    /**
     * 根据条件分页查询平台数据
     *
     * @param platform 平台信息
     * @return 平台数据集合信息
     */
    public List<SysPlatform> selectPlatformList(SysPlatform platform);

    /**
     * 根据用户ID查询平台列表
     *
     * @param userId 用户ID
     * @return 平台列表
     */
    public List<SysPlatform> selectPlatformsByUserId(Long userId);

    /**
     * 根据用户ID查询平台权限
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    public Set<String> selectPlatformPermissionByUserId(Long userId);

    /**
     * 查询所有平台
     *
     * @return 平台列表
     */
    public List<SysPlatform> selectPlatformAll();

    /**
     * 根据用户ID获取平台选择框列表
     *
     * @param userId 用户ID
     * @return 选中平台ID列表
     */
    public List<Long> selectPlatformListByUserId(Long userId);

    /**
     * 通过平台ID查询平台
     *
     * @param platformId 平台ID
     * @return 平台对象信息
     */
    public SysPlatform selectPlatformById(Long platformId);

    /**
     * 校验平台名称是否唯一
     *
     * @param platform 平台信息
     * @return 结果
     */
    public boolean checkPlatformNameUnique(SysPlatform platform);

    /**
     * 校验平台权限是否唯一
     *
     * @param platform 平台信息
     * @return 结果
     */
    public boolean checkPlatformKeyUnique(SysPlatform platform);

    /**
     * 通过平台ID查询平台使用数量
     *
     * @param platformId 平台ID
     * @return 结果
     */
    public int countUserPlatformByPlatformId(Long platformId);

    /**
     * 新增保存平台信息
     *
     * @param platform 平台信息
     * @return 结果
     */
    public int insertPlatform(SysPlatform platform);

    /**
     * 修改保存平台信息
     *
     * @param platform 平台信息
     * @return 结果
     */
    public int updatePlatform(SysPlatform platform);

    /**
     * 修改平台状态
     *
     * @param platform 平台信息
     * @return 结果
     */
    public int updatePlatformStatus(SysPlatform platform);

    /**
     * 修改数据权限信息
     *
     * @param platform 平台信息
     * @return 结果
     */
    public int authDataScope(SysPlatform platform);

    /**
     * 通过平台ID删除平台
     *
     * @param platformId 平台ID
     * @return 结果
     */
    public int deletePlatformById(Long platformId);

    /**
     * 批量删除平台信息
     *
     * @param platformIds 需要删除的平台ID
     * @return 结果
     */
    public int deletePlatformByIds(Long[] platformIds);

    /**
     * 取消授权用户平台
     *
     * @param userPlatform 用户和平台关联信息
     * @return 结果
     */
    //public int deleteAuthUser(SysUserPlatform userPlatform);

    /**
     * 批量取消授权用户平台
     *
     * @param platformId 平台ID
     * @param userIds    需要取消授权的用户数据ID
     * @return 结果
     */
    public int deleteAuthUsers(Long platformId, Long[] userIds);

    /**
     * 批量选择授权用户平台
     *
     * @param platformId 平台ID
     * @param userIds    需要删除的用户数据ID
     * @return 结果
     */
    public int insertAuthUsers(Long platformId, Long[] userIds);

    public List<SysPlatformRole> getUserPlatformRoleByUserId(Long userId);
    public List<SysUserPlatformRole> getUserPlatformRole(Long userId);
    public Long getRoleByUserPlatform(SysUserPlatformRole userPlatformRole);
}
